#include "BulletCollision/CollisionDispatch/btConvexConvexAlgorithm.h"
#ifdef __cplusplus
extern "C" {
#endif
btConvexConvexAlgorithm::CreateFunc* bullet_NewbtConvexConvexAlgorithmCreateFunc(btConvexPenetrationDepthSolver* pdSolver){
	btConvexPenetrationDepthSolver * c_arg_pdSolver=(btConvexPenetrationDepthSolver *)(void*)(pdSolver);
	btConvexConvexAlgorithm::CreateFunc* wrap_out = new btConvexConvexAlgorithm::CreateFunc(c_arg_pdSolver);
	return wrap_out;
}

int bullet_btConvexConvexAlgorithmCreateFunc_GetFieldOfM_minimumPointsPerturbationThreshold(btConvexConvexAlgorithm::CreateFunc* c_this){
	return (int)(c_this->m_minimumPointsPerturbationThreshold);
}

int bullet_btConvexConvexAlgorithmCreateFunc_GetFieldOfM_numPerturbationIterations(btConvexConvexAlgorithm::CreateFunc* c_this){
	return (int)(c_this->m_numPerturbationIterations);
}

btConvexConvexAlgorithm* bullet_NewbtConvexConvexAlgorithm(btPersistentManifold* mf,btCollisionAlgorithmConstructionInfo* ci,btCollisionObjectWrapper* body0Wrap,btCollisionObjectWrapper* body1Wrap,btConvexPenetrationDepthSolver* pdSolver,int numPerturbationIterations,int minimumPointsPerturbationThreshold){
	btPersistentManifold * c_arg_mf=(btPersistentManifold *)(void*)(mf);
	btCollisionAlgorithmConstructionInfo const& c_arg_ci=(btCollisionAlgorithmConstructionInfo const&)(*ci);
	btCollisionObjectWrapper const * c_arg_body0Wrap=(btCollisionObjectWrapper const *)(void*)(body0Wrap);
	btCollisionObjectWrapper const * c_arg_body1Wrap=(btCollisionObjectWrapper const *)(void*)(body1Wrap);
	btConvexPenetrationDepthSolver * c_arg_pdSolver=(btConvexPenetrationDepthSolver *)(void*)(pdSolver);
	int c_arg_numPerturbationIterations=numPerturbationIterations;
	int c_arg_minimumPointsPerturbationThreshold=minimumPointsPerturbationThreshold;
	btConvexConvexAlgorithm* wrap_out = new btConvexConvexAlgorithm(c_arg_mf,c_arg_ci,c_arg_body0Wrap,c_arg_body1Wrap,c_arg_pdSolver,c_arg_numPerturbationIterations,c_arg_minimumPointsPerturbationThreshold);
	return wrap_out;
}

btPersistentManifold* bullet_btConvexConvexAlgorithm_getManifold(btConvexConvexAlgorithm* c_this){
	btPersistentManifold const * c_out = c_this->getManifold();
	btPersistentManifold* wrap_out = (btPersistentManifold*)(void*)(c_out);
	return wrap_out;
}

void bullet_btConvexConvexAlgorithm_setLowLevelOfDetail(btConvexConvexAlgorithm* c_this,bool useLowLevel){
	bool c_arg_useLowLevel=useLowLevel;
	c_this->setLowLevelOfDetail(c_arg_useLowLevel);
}

#ifdef __cplusplus
}
#endif
